Thema Datum  Von Nutzer Rating
Antwort
Rot VBA | Aktive Zelle
12.03.2021 14:07:45 Enes
NotSolved

Ansicht des Beitrags:
Von:
Enes
Datum:
12.03.2021 14:07:45
Views:
1096
Rating: Antwort:
  Ja
Thema:
VBA | Aktive Zelle

Servus,
nachdem ich sämtliche Forenbeiträge durchstöbert habe, ich jedoch immer noch nicht auf eine Lösung gekommen bin, habe ich mich nun entschlossen aktiv zu fragen.

Ausgangspunkt:
Ich möchte meine Monate per Button aktualisieren. Die Aktualisierung erfolgt, indem ich vorher festgelegte Formeln kopiere, in die Spalte einfüge und die eingefügten Formeln nach unten bis zur letzten Zeile runter ziehe. Geht problemlos. Natürlich per VBA.

Problem:
Genau dasselbe Spiel, nur anstelle von 12 VBA-Codes für 12 Monate, will ich eine haben, die abhängig von der aktiven Zelle sind. 
Beispiel: Ich klick auf die Zelle H2 (Januar). H2 ist jetzt meine aktive Zelle. Ich klicke auf den Button, um mein Makros auszuführen. 
Makros sieht wo die aktive Zelle ist, springt ins Tabellenblatt "Parameter", kopiert den Bereich, springt zurück ins Tabellenblatt "Übersicht", fügt den kopierten Bereich ein, soll den eingefügten Bereich nun runter bis zur letzten Zeile ziehen, xlCalculationAutomatic, xlCalculationManual, den gesamten Bereich kopieren und einfügen, sodass nur noch Werte ausgegeben werden. 
Ich hoffe, es ist verständlich, was ich beabsichtige. 


Hier der VBA-Code:
Anmerkung: Der Auskommentierte Teil funktioniert, wie er soll. Ich wollte die Formel in Abhängigkeit der aktiven Zelle machen, jedoch komme ich hier nicht weiter. Ich bin ein VBA-Neuling.
/-----------------------------------------------/
Sub Übersicht_MonatAktualisieren()
    'unter aktiver Zelle einfügen
Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row     'Suche letzte beschriftete Zeile in Spalte A
        
    If Not Intersect(ActiveCell, Range("H2:S2")) Is Nothing Then
        Worksheets("Parameter").Range("H3:H45").Copy
        Worksheets("Übersicht").Activate
        With ActiveCell
            .Offset(1).PasteSpecial xlPasteAll      'Gehe 1 Zelle runter und füge dort ein
            .Range(ActiveCell.Address, Cells(ActiveCell.Row + 42, ActiveCell.Column - 7)).Select
            Selection.AutoFill Destination:=Range(Cells(ActiveCell.Row - 1, ActiveCell.Column - 7), Cells(lastRow, ActiveCell.Column - 7)), Type:=xlFillDefault
        End With
    
        'Range("H3:H45").Select
        'Selection.AutoFill Destination:=Range("H3:H" & lastRow), Type:=xlFillDefault
        'Application.Calculation = xlCalculationAutomatic
        'Application.Calculation = xlCalculationManual
        'Range("H3:H45").Copy
        'Range("H3:H45").PasteSpecial xlPasteValues
        'Application.CutCopyMode = False
        'MsgBox "Block wurde aktualisiert"

    Else: MsgBox "Bitte erwünschten Monatsnamen in Zeile 2 anklicken!"
    End If
End Sub

Falls notwendig habe ich hier nochmal die Formel für den Monat Januar ohne Abhängigkeit der aktiven Zelle:
Sub Makro1()
Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row  '   Suche letzte beschriftete Zeile in Spalte A
    
    'Einfügen in "ersten Block" (Ameropa - Jan/Feb/Mrz/...)
    Worksheets("Parameter").Range("H3:H45").Copy
    Worksheets("Übersicht").Range("H3:H45").PasteSpecial xlPasteAll
    
    Range("H3:H45").Select
    Selection.AutoFill Destination:=Range("H3:H" & lastRow), Type:=xlFillDefault
   
    
    'Am Ende: Spaltenbereich kopieren, einfügen, nur Werte erhalten
    Application.Calculation = xlCalculationAutomatic
    Application.Calculation = xlCalculationManual
    
    Range("H3:H" & lastRow).Copy
    Range("H3:H" & lastRow).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    MsgBox "Januar wurde aktualisiert"
End Sub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA | Aktive Zelle
12.03.2021 14:07:45 Enes
NotSolved